// 歌词显示功能
(function() {
    // 确保window.lyrics对象存在
    if (typeof window.lyrics === 'undefined') {
        window.lyrics = {};
    }
    
    // 全局变量
    window.lyrics.lyricsData = []; // 存储解析后的歌词数据
    window.lyrics.currentLyricIndex = -1; // 当前显示的歌词索引
    window.lyrics.lyricsContainer = null; // 外部歌词容器 (固定高度和滚动)
    window.lyrics.lyricsElement = null; // 内部歌词元素 (包含歌词行)
    
    // 调试控制标志
    window.send_debug_info = false;
    
    // 初始化函数
    window.lyrics.init = function() {
        // 确保DOM元素加载完成后获取
        window.lyrics.lyricsElement = document.getElementById('lyrics');
        window.lyrics.lyricsContainer = document.querySelector('.lyrics-container');
        
        if (!window.lyrics.lyricsElement || !window.lyrics.lyricsContainer) {
            console.warn('无法找到歌词内容元素或外部容器元素！请确保HTML中存在id为"lyrics"的元素和class为"lyrics-container"的元素。');
            return;
        }
        
        // 初始化调试元素
        window.lyrics.createDebugElement();
        
        // 设置默认的空歌词状态
        window.lyrics.lyricsData = [];
        window.lyrics.currentLyricIndex = -1;
        window.lyrics.lyricsElement.innerHTML = '<div class="no-lyrics">暂无歌词</div>';
    };
    
    // 添加调试信息显示元素
    window.lyrics.createDebugElement = function() {
        let debugElement = document.getElementById('lyrics-debug');
        if (!debugElement) {
            debugElement = document.createElement('div');
            debugElement.id = 'lyrics-debug';
            debugElement.style.cssText = `
                position: fixed;
                bottom: 10px;
                right: 10px;
                background: rgba(0,0,0,0.7);
                color: white;
                padding: 10px;
                border-radius: 5px;
                font-size: 12px;
                z-index: 9999;
                max-width: 300px;
            `;
            document.body.appendChild(debugElement);
        }
        return debugElement;
    };
    
    // 更新调试信息
    window.lyrics.updateDebugInfo = function(currentTime, lyricIndex, lyricTime, lyricText) {
        if (!window.send_debug_info) return; // 默认不显示调试信息
        
        const debugElement = window.lyrics.createDebugElement();
        debugElement.innerHTML = `
            音频时间: ${currentTime.toFixed(2)}s<br>
            歌词索引: ${lyricIndex}<br>
            歌词时间: ${lyricTime ? lyricTime.toFixed(2) : 'N/A'}s<br>
            当前歌词: "${lyricText || 'N/A'}"
        `;
    };
    
    // 从URL加载歌词
    window.lyrics.loadLyricsFromUrl = function(lyricsUrl) {
        console.log(`加载歌词文件: ${lyricsUrl}`);
        
        // 检查歌词容器是否存在
        if (!window.lyrics.lyricsElement) {
            window.lyrics.lyricsElement = document.getElementById('lyrics');
            if (!window.lyrics.lyricsElement) {
                console.error('无法找到歌词内容元素');
                return;
            }
        }
        
        if (!window.lyrics.lyricsContainer) {
            window.lyrics.lyricsContainer = document.querySelector('.lyrics-container');
            if (!window.lyrics.lyricsContainer) {
                console.error('无法找到歌词容器元素');
                return;
            }
        }
        
        window.lyrics.lyricsData = [];
        window.lyrics.currentLyricIndex = -1;
        window.lyrics.lyricsElement.innerHTML = '';
        
        // 显示加载中状态
        window.lyrics.lyricsElement.innerHTML = '<div class="lyric-line loading">正在加载歌词...</div>';
        
        // 检查是否有歌词URL
        if (!lyricsUrl || lyricsUrl.trim() === '') {
            // 直接显示默认歌词
            setTimeout(() => {
                window.lyrics.lyricsData = [
                    { time: 0, text: '暂无歌词信息' },
                    { time: 3, text: '请欣赏音乐' }
                ];
                window.lyrics.renderLyrics();
            }, 300);
            return;
        }
        
        // 首先尝试原始歌词URL
        window.lyrics.fetchLyricsWithFallback(lyricsUrl, [
            // 尝试不同的LRC文件扩展名
            lyricsUrl.replace(/\.[^.]+$/, '.lrc'),
            lyricsUrl.replace(/\.[^.]+$/, '.txt'),
            // 尝试同目录下同名但扩展名不同的歌词文件
            lyricsUrl.replace(/\.[^.]+$/, '') + '.lrc',
            lyricsUrl.replace(/\.[^.]+$/, '') + '.txt',
            // 尝试去除查询参数后的URL
            lyricsUrl.split('?')[0].replace(/\.[^.]+$/, '.lrc')
        ]);
    };
    
    // 尝试加载歌词，并在失败时使用备选URL
    window.lyrics.fetchLyricsWithFallback = function(primaryUrl, fallbackUrls) {
        fetch(primaryUrl)
            .then(response => {
                if (!response.ok) {
                    throw new Error(`无法加载歌词文件: ${response.status}`);
                }
                return response.text();
            })
            .then(text => {
                // 解析并渲染歌词
                window.lyrics.parseLyrics(text);
                window.lyrics.renderLyrics();
            })
            .catch(error => {
                console.warn('主歌词URL加载失败:', error);
                
                // 尝试备选URL
                if (fallbackUrls && fallbackUrls.length > 0) {
                    const nextUrl = fallbackUrls.shift();
                    console.log(`尝试备选歌词URL: ${nextUrl}`);
                    window.lyrics.fetchLyricsWithFallback(nextUrl, fallbackUrls);
                } else {
                    console.error('所有备选歌词URL都加载失败');
                    // 所有尝试都失败时显示友好信息
                    window.lyrics.lyricsData = [
                        { time: 0, text: '歌词加载失败' },
                        { time: 3, text: '请检查歌词文件是否存在' }
                    ];
                    window.lyrics.renderLyrics();
                }
            });
    };
    
    // 解析歌词文本
    window.lyrics.parseLyrics = function(lyricsText) {
        const lines = lyricsText.trim().split('\n');
        // 增强的正则表达式，支持多种LRC格式变体
        // 匹配 [mm:ss.xx], [mm:ss:xx], [mm:ss], [mm:ss.xxx] 等格式
        const lyricRegex = /^\[(\d{2}):(\d{2})(?:[.:](\d{1,3}))?\](.+)$/;
        
        window.lyrics.lyricsData = [];
        
        lines.forEach(line => {
            const trimmedLine = line.trim();
            const match = trimmedLine.match(lyricRegex);
            
            if (match) {
                const minutes = parseInt(match[1]);
                const seconds = parseInt(match[2]);
                // 支持1-3位毫秒数，没有毫秒数时默认为0
                const milliseconds = match[3] ? parseInt(match[3]) : 0;
                const text = match[4].trim();
                
                if (text) { // 忽略空歌词
                    // 转换为总秒数，根据毫秒位数调整除数
                    let time;
                    if (match[3] && match[3].length === 3) {
                        // 3位毫秒数
                        time = minutes * 60 + seconds + milliseconds / 1000;
                    } else {
                        // 1-2位毫秒数或没有毫秒数
                        time = minutes * 60 + seconds + milliseconds / 100;
                    }
                    
                    window.lyrics.lyricsData.push({
                        time: time,
                        text: text
                    });
                }
            }
        });
        
        // 按时间排序
        window.lyrics.lyricsData.sort((a, b) => a.time - b.time);
        
        // 确保至少有一条歌词数据，避免白屏
        if (window.lyrics.lyricsData.length === 0) {
            window.lyrics.lyricsData = [
                { time: 0, text: '无法解析歌词格式' },
                { time: 3, text: '请检查歌词文件' }
            ];
        }
        
        console.log(`歌词解析完成，共 ${window.lyrics.lyricsData.length} 行歌词`);
    };
    
    // 渲染歌词到页面
    window.lyrics.renderLyrics = function() {
        if (!window.lyrics.lyricsElement) {
            console.error('无法找到歌词容器元素');
            return;
        }
        
        window.lyrics.lyricsElement.innerHTML = '';
        
        window.lyrics.lyricsData.forEach((lyric, index) => {
            const lyricLine = document.createElement('div');
            lyricLine.classList.add('lyric-line');
            lyricLine.textContent = lyric.text;
            lyricLine.dataset.index = index;
            
            window.lyrics.lyricsElement.appendChild(lyricLine);
        });
        
        console.log('歌词渲染完成');
    };
    
    // 更新歌词显示
    window.lyrics.updateLyricsDisplay = function(currentTime) {
        // 确保传入的是数字类型的时间
        if (typeof currentTime !== 'number') {
            currentTime = parseFloat(currentTime);
        }
        
        // 检查元素是否存在
        if (!window.lyrics.lyricsElement || !window.lyrics.lyricsContainer) {
            console.error('歌词容器元素不存在，无法更新歌词显示');
            return;
        }
        
        // 如果没有歌词数据，显示提示信息
        if (window.lyrics.lyricsData.length === 0) {
            window.lyrics.lyricsElement.innerHTML = '<div class="no-lyrics">暂无歌词</div>';
            return;
        }
        
        // 查找应该显示的歌词索引
        let currentLyricIndex = -1;
        for (let i = 0; i < window.lyrics.lyricsData.length; i++) {
            if (window.lyrics.lyricsData[i].time <= currentTime) {
                currentLyricIndex = i;
            } else {
                break;
            }
        }
        
        // 如果找到应该显示的歌词
        if (currentLyricIndex !== -1) {
            // 获取所有歌词行元素
            const lyricLines = window.lyrics.lyricsElement.querySelectorAll('.lyric-line');
            
            // 检查歌词行元素是否存在
            if (lyricLines.length === 0) {
                console.error('没有找到歌词行元素');
                return;
            }
            
            // 移除所有歌词行的高亮状态
            for (let i = 0; i < lyricLines.length; i++) {
                lyricLines[i].classList.remove('active');
            }
            
            // 为当前歌词行添加高亮状态
            if (lyricLines[currentLyricIndex]) {
                lyricLines[currentLyricIndex].classList.add('active');
                
                // 将当前歌词滚动到中心位置
                window.lyrics.scrollLyricsToCenter(currentLyricIndex);
            } else {
                console.error('无法找到当前索引对应的歌词行元素');
            }
        } else {
            console.log('当前时间没有对应的歌词');
        }
    };
    
    // 将歌词滚动到中心位置
    window.lyrics.scrollLyricsToCenter = function(lineIndex) {
        // 检查元素是否存在
        if (!window.lyrics.lyricsElement || !window.lyrics.lyricsContainer) {
            console.error('歌词容器元素不存在，无法滚动歌词');
            return;
        }
        
        // 获取所有歌词行元素
        const lyricLines = window.lyrics.lyricsElement.querySelectorAll('.lyric-line');
        
        // 检查指定索引的歌词行是否存在
        if (!lyricLines[lineIndex]) {
            console.error('指定索引的歌词行不存在');
            return;
        }
        
        // 获取当前要显示的歌词行元素
        const targetLine = lyricLines[lineIndex];
        
        // 获取行高
        const lineHeight = targetLine.clientHeight;
        
        // 获取歌词容器高度的一半
        const containerHalfHeight = window.lyrics.lyricsContainer.clientHeight / 2;
        
        // 计算歌词行的顶部位置（相对于歌词元素的顶部）
        const lineTop = targetLine.offsetTop;
        
        // 计算目标滚动位置，使歌词行位于容器中心
        const targetScrollTop = lineTop - containerHalfHeight + lineHeight / 2;
        
        // 使用scrollTo方法实现平滑滚动
        window.lyrics.lyricsContainer.scrollTo({
            top: targetScrollTop,
            behavior: 'smooth'
        });
    };
    
    // 为了向后兼容，保留全局函数
    function updateLyricsDisplay(currentTime) {
        console.log('调用旧版updateLyricsDisplay函数（向后兼容）');
        if (window.lyrics && window.lyrics.updateLyricsDisplay) {
            window.lyrics.updateLyricsDisplay(currentTime);
        }
    }
    
    // 导出loadLyricsFromUrl到全局window对象，供app.js调用
    window.loadLyricsFromUrl = function(lyricsUrl) {
        console.log('调用全局loadLyricsFromUrl函数（供app.js使用）');
        if (window.lyrics && window.lyrics.loadLyricsFromUrl) {
            window.lyrics.loadLyricsFromUrl(lyricsUrl);
        }
    };
    
    // 在DOM加载完成后初始化歌词功能
    document.addEventListener('DOMContentLoaded', function() {
        window.lyrics.init();
    });
    
})();